home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
LOGIC Apps
/
Logic-APPLE_II_APPS.iso
/
pc
/
LOGIC Apple II 5.25" Library - DOS Part 3
/
DOS075.dsk
/
CALENDAR.bas
< prev
next >
Wrap
BASIC Source File
|
2012-02-16
|
8KB
|
256 lines
100 GOTO 30000
200 REM ** SET WINDOW **
210 POKE 32,1: POKE 33,37: POKE 34,1: POKE 35,16: HOME : RETURN
3000 REM *** CHOICE OF MONTH ***
3004 GOSUB 210: VTAB 7: HTAB 4
3010 INPUT "TWO NUMBERS:(YYYY,MM)? ";Y,M
3014 IF Y >1581 AND M >0 AND M <13 THEN 3990
3020 PRINT "PARDON?"; CHR$(7): GOTO 3010
3990 RETURN
5000 REM *** DISPLAY MONTH ***
5010 GOSUB 200
5020 YY = INT(Y -1):MM = INT(M +10): IF MM <13 THEN 5040
5030 MM = MM -12:YY = YY +1
5040 DD = INT(D0 +F0(MM) + INT(YY/4) + INT(YY/400) - INT(YY/100) +YY)
5050 DD = INT(1.0001 +DD -7 * INT(DD/7))
5060 VTAB 4: HTAB 17 - LEN(MO$(MM))/2
5070 PRINT MO$(MM);", ";Y
5080 VTAB 8: HTAB 6
5090 PRINT "SUN MON TUE WED THR FRI SAT"
5100 IF MM <12 THEN 5200
5110 LAST = 28
5120 IF INT(Y -4 * INT(Y/4)) = 0 AND INT(Y -100 * INT(Y/100)) < >0 THEN LAST = 29
5130 IF INT(Y -400 * INT(Y/400)) = 0 THEN LAST = 29
5140 GOTO 5300
5200 LAST = F0(MM +1) -F0(MM)
5300 FIRST = DD:D1 = 1
5310 FOR WEEK = 1 TO 6: VTAB 9 +WEEK: FOR DAY = 1 TO 7: HTAB 4 *DAY +2
5320 IF D1 = 1 AND DAY <FIRST THEN 5360
5330 IF D1 >LAST THEN 5360
5340 IF D1 <10 THEN PRINT CHR$(32);
5350 PRINT D1;:D1 = D1 +1
5360 NEXT : NEXT
5370 TEXT
5990 RETURN
6000 REM **** BUILD 3 MONTHS ****
6001 REM USED BY PRINTER
6002 REM
6010 FOR I = 1 TO 7:LINE$(I) = "": FOR J = 1 TO 80:LINE$(I) = LINE$(I) + CHR$(32): NEXT :X = FRE(0): NEXT
6020 FOR M1 = 1 TO 3:M = 3 *A +M1
6030 YY = INT(Y -1):MM = INT(M +10): IF MM <13 THEN 6050
6040 MM = MM -12:YY = YY +1
6050 DD = INT(D0 +F0(MM) + INT(YY/4) + INT(YY/400) - INT(YY/100) +YY)
6060 DD = INT(1.0001 +DD -7 * INT(DD/7))
6070 LINE$(7) = LEFT$(LINE$(7),T(M1)) +MO$(MM) + RIGHT$(LINE$(7), LEN(LINE$(7)) -T(M1) - LEN(MO$(MM)))
6080 IF MM <12 THEN 6120
6090 LAST = 28: IF INT(Y -4 * INT(Y/4)) = 0 AND INT(Y -100 * INT(Y/100)) < >0 THEN LAST = 29
6110 GOTO 6200
6120 LAST = F0(MM +1) -F0(MM)
6200 FIRST = DD:D1 = 1
6210 FOR WEEK = 1 TO 6: FOR DAY = 1 TO 7
6220 IF D1 = 1 AND DAY <FIRST THEN 6290
6230 IF D1 >LAST THEN 6290
6240 A$ = STR$(D1)
6250 LINE$(WEEK) = LEFT$(LINE$(WEEK),T(M1) +3 *DAY - LEN(A$)) +A$ + RIGHT$(LINE$(WEEK), LEN(LINE$(WEEK)) -T(M1) -3 *DAY)
6260 D1 = D1 +1
6290 NEXT
6292 NEXT
6294 NEXT M1
6990 RETURN
21000 REM **** SCREEN MENU ****
21010 TEXT : HOME
21020 INVERSE : VTAB 1: HTAB 1: FOR I = 1 TO 39: PRINT CHR$(32);: NEXT
21030 FOR I = 1 TO 18: VTAB I: HTAB 1: PRINT CHR$(32);: HTAB 39: PRINT CHR$(32);: NEXT
21040 VTAB 18: HTAB 1: FOR I = 1 TO 39: PRINT CHR$(32);: NEXT
21050 NORMAL
21060 GOSUB 3000: REM CHOICE
21070 GOSUB 5000: REM DISPLAY MONTH
21080 TEXT : VTAB 20:T = 8
21090 HTAB T: PRINT " <LEFT> ... LAST MONTH"
21100 HTAB T: PRINT "<RIGHT> ... NEXT MONTH"
21110 HTAB T: PRINT "<SPACE> ... ANOTHER CHOICE"
21120 HTAB T: PRINT " <RTN> ... RETURN TO MENU"
21150 VTAB 23: HTAB 1: GET A$
21160 IF A$ < > CHR$(8) THEN 21180
21170 M = M -1: IF M > = 1 THEN 21174
21172 M = 12:Y = Y -1
21174 GOSUB 5000: GOTO 21150
21180 IF A$ < > CHR$(21) THEN 21190
21182 M = M +1: IF M <13 THEN 21186
21184 M = 1:Y = Y +1
21186 GOSUB 5000: GOTO 21150
21190 IF A$ < > CHR$(32) THEN 21210
21200 GOSUB 3000: REM CHOICE
21202 GOSUB 5000: REM DISPLAY MONTH
21204 GOTO 21150
21210 IF A$ = CHR$(13) THEN 21900
21220 GOTO 21150: REM IGNORE
21900 RETURN
22000 REM **** PRINTER MENU ****
22002 PRINT "OTTAWA 6502 USER GROUP -- POB 6283 STN J -- OTTAWA -- K1P 5R3"
22010 TEXT : HOME
22015 VTAB 6
22020 INPUT "PRINTER SLOT? (1-4) ";SLOT
22030 IF SLOT <1 OR SLOT >4 THEN PRINT CHR$(7);"PARDON?": GOTO 22020
22040 PRINT : PRINT
22050 INPUT "WHICH YEAR?(YYYY): ";Y0$
22052 IF LEN(Y0$) < >4 THEN 22050
22054 Y1 = VAL( LEFT$(Y0$,1)):Y2 = VAL( MID$ (Y0$,2,1)):Y3 = VAL( MID$ (Y0$,3,1)):Y4 = VAL( RIGHT$(Y0$,1))
22056 Y = VAL(Y0$)
22060 IF Y <1582 OR Y >2999 THEN PRINT CHR$(7);"PARDON?": GOTO 22050
22062 PRINT
22064 INPUT "HOW MANY COPIES?(1-20): ";NC%: IF NC% <1 OR NC% >20 THEN 22062
22066 PRINT : PRINT
22070 PRINT "START UP THE PRINTER, THEN"
22080 PRINT "PRESS A KEY ";: GET A$
22090 PRINT : PRINT : HTAB 15: PRINT "... STANDBY ..."
22100 PRINT : PRINT : PRINT
22200 PR# SLOT
22201 PRINT CHR$(9);"80N"
22210 FOR CN = 1 TO NC%
22220 PRINT CHR$(32)
22222 PRINT CHR$(32)
22224 FOR L = 1 TO 7
22226 FOR I = 1 TO 20: PRINT CHR$(32);: NEXT
22228 PRINT Y$(L,Y1 +1);" ";Y$(L,Y2 +1);" ";Y$(L,Y3 +1);" ";Y$(L,Y4 +1)
22230 NEXT
22232 PRINT CHR$(32): PRINT CHR$(32)
22234 PRINT CHR$(32)
22240 FOR A = 0 TO 3
22250 GOSUB 6010
22260 PRINT LINE$(7)
22262 A$ = "S M T W T F S"
22264 PRINT " ";A$;" ";A$;" ";A$
22270 FOR I = 1 TO 6: PRINT LINE$(I): NEXT
22280 FOR I = 1 TO 3: PRINT CHR$(32): NEXT
22290 NEXT A
22291 PRINT "<<< HAVE A GREAT YEAR! >>>"
22292 PRINT "OTTAWA 6502 USER GROUP -- POB 6283 STN J -- OTTAWA -- K2A 1T3"
22300 FOR I = 1 TO 8: PRINT CHR$(32): NEXT
22400 NEXT CN
22500 PR# 0
22990 RETURN
30000 REM **** CONSTANTS ****
30010 D0 = 3: REM PHASE DAY OF WEEK
30050 REM START THE YEAR ON MARCH FIRST AND TABLE THE
30052 REM FIRST DAY OF EACH MONTH. THIS WORKS WHEN
30054 REM FEBRUARY IS THE LAST MONTH OF THE YEAR!
30100 DIM F0(12): DATA 0,31,61,92,122,153,184,214,245,275,306,337: FOR I = 1 TO 12: READ F0(I): NEXT
30120 DIM MO$(12): DATA MARCH,APRIL,MAY,JUNE,JULY,AUGUST,SEPTEMBER,OCTOBER,NOVEMBER,DECEMBER
30130 DATA JANUARY,FEBRUARY: FOR I = 1 TO 12: READ MO$(I): NEXT
30140 DIM LINE$(7)
30150 DIM T(3):T(1) = 1:T(2) = 28:T(3) = 55
30200 REM ZERO
30201 DATA " **** "
30202 DATA "** **"
30203 DATA "** **"
30204 DATA "** **"
30205 DATA "** **"
30206 DATA "** **"
30207 DATA " **** "
30210 REM ONE
30211 DATA " ** "
30212 DATA " *** "
30213 DATA " ** "
30214 DATA " ** "
30215 DATA " ** "
30216 DATA " ** "
30217 DATA " **** "
30220 REM TWO
30221 DATA " **** "
30222 DATA "** **"
30223 DATA "** **"
30224 DATA " ** "
30225 DATA " ** "
30226 DATA "** "
30227 DATA "******"
30230 REM THREE
30231 DATA " **** "
30232 DATA "** **"
30233 DATA " **"
30234 DATA " ** "
30235 DATA " **"
30236 DATA "** **"
30237 DATA " **** "
30240 REM FOUR
30241 DATA " ** "
30242 DATA " *** "
30243 DATA " * ** "
30244 DATA "******"
30245 DATA " ** "
30246 DATA " ** "
30247 DATA " ** "
30250 REM FIVE
30251 DATA "******"
30252 DATA "** "
30253 DATA "** "
30254 DATA "***** "
30255 DATA " **"
30256 DATA "** **"
30257 DATA " **** "
30260 REM SIX
30261 DATA " **** "
30262 DATA "** **"
30263 DATA "** "
30264 DATA "***** "
30265 DATA "** **"
30266 DATA "** **"
30267 DATA " **** "
30270 REM SEVEN
30271 DATA "******"
30272 DATA "* **"
30273 DATA " ** "
30274 DATA " ** "
30275 DATA " ** "
30276 DATA "** "
30277 DATA "** "
30280 REM EIGHT
30281 DATA " **** "
30282 DATA "** **"
30283 DATA "** **"
30284 DATA " **** "
30285 DATA "** **"
30286 DATA "** **"
30287 DATA " **** "
30290 REM NINE
30291 DATA " **** "
30292 DATA "** **"
30293 DATA "** **"
30294 DATA " **** "
30295 DATA " ** "
30296 DATA " ** "
30297 DATA "** "
30300 DIM Y$(7,10)
30310 FOR I = 1 TO 10
30320 FOR J = 1 TO 7: READ Y$(J,I): NEXT
30330 NEXT
30990 REM
30992 REM
31000 REM **** MAINLINE MENU ****
31010 TEXT : HOME : NORMAL : SPEED= 255
31020 VTAB 3: HTAB 16: PRINT "CALENDAR"
31022 PRINT : HTAB 6
31024 PRINT "FROM THE OTTAWA 6502 USER GROUP"
31026 PRINT : HTAB 9: PRINT "WRITTEN BY PAUL IRWIN"
31030 T = 12: VTAB 10
31040 HTAB 5: PRINT "A PERPETUAL CALENDAR PROGRAM FOR"
31050 PRINT "YOUR CHOICE OF SCREEN OR PRINTER:"
31060 PRINT : HTAB T: PRINT "S ... SCREEN"
31070 PRINT : HTAB T: PRINT "P ... PRINTER"
31080 PRINT : HTAB T -4: PRINT "<RTN> ... RETURN TO BASIC"
31120 X = FRE(0)
31130 VTAB 20: HTAB 16: PRINT "WHICH? ";: GET A$
31140 IF A$ < >"S" THEN 31160
31150 GOSUB 21000: GOTO 31010
31160 IF A$ < >"P" THEN 31180
31170 GOSUB 22000: GOTO 31010
31180 IF A$ < > CHR$(13) THEN 31130
32000 TEXT : HOME : VTAB 12: HTAB 9
32010 PRINT "CALENDAR IS OFF THE AIR"
32020 VTAB 23
32767 END
40000 REM ***** CALENDAR *****
40001 REM * WRITTEN 1980 BY *
40002 REM * PAUL IRWIN *
40003 REM * (613) 728-6728 *
40004 REM ********************